上一篇我們已經知道如利用SQL Server Agent 進行自動化管理作業,為了能掌握自動化管理作業是否順利進行,我們會需要收到SQL Server的通知(一般是作業錯誤才來通知),所以接下來這篇我們就來介紹SQL Server的Database Mail。
SQL Server 2008是透過Database Mail這個服務來進行郵件訊息的傳送,而且與SQL Server 2000比較不同的是,在SQL Server 2000的時候,使用SQL Mail還需要設定Outlook或Extended MAPI用戶端的組態,而在SQL Server 2008 使用Database Mail 則不需要,它只需要透過SMTP協定就可以進行傳送郵件的工作,也就是說只要將Database Mail組態設定好,就可以進行傳送郵件的工作,而Database Mail的組態則會被儲存在SQL Server的系統資料庫中。
[架構與運作]
Database Mail 是由下列四項主要元件所組成:
1.組態與安全性元件
[組態與安全性物件]會建立 Database Mail 的設定檔與帳戶,並將Database Mail 組態與安全性資訊儲存在 msdb 系統資料庫中。
2.訊息元件
Database Mail 用來傳送電子郵件的訊息物件會儲存在msdb系統資料庫中,由msdb 來充當郵件主機資料庫,這些物件包括 sp_send_dbmail 預存程序,以及保存訊息相關資訊的資料結構。
3.Database Mail 可執行檔
Database Mail 可執行檔是一個外部程式,預設位置C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Binn\DatabaseMail.exe,它會從 msdb 資料庫中的佇列讀取,並傳送訊息到電子郵件伺服器。
4.記錄與稽核元件
Database Mail 會將記錄資訊記錄在 msdb 資料庫與 Microsoft Windows 應用程式事件記錄檔中,除了儲存已傳送 (或未傳送) 的電子郵件訊息之外,Database Mail 也會在系統資料表中記錄任何電子郵件附加檔案。
Database Mail元件運作架構圖如下:
Database Mail 是依據 Service Broker 技術的佇列架構來設計。運作流程如下:
1.當使用者執行 sp_send_dbmail預存程序或是SQL Server要進行郵件傳送時,[訊息元件]會在郵件佇列中插入項目,並建立包含該電子郵件訊息的記錄。
2.在郵件佇列中插入新項目的事件會觸發(triger)啟動外部 Database Mail 處理序 (DatabaseMail.exe)。DatabaseMail.exe再將郵件訊息傳送到電子郵件伺服器。
3.郵件傳送後DatabaseMail.exe會在「狀態」佇列新增一筆記送紀錄,表示傳送作業的結果。
4..在狀態佇列中插入新記錄會觸發(triger)啟動內部預存程序,由預存程序更新電子郵件訊息的狀態。
[設定Database Mail]
您可以利用[Database Mail 組態精靈]來管理 Database Mail 組態物件,設定的步驟如下:
1.在SQL Server Management Studio中展開 [資料庫],並展開[管理]節點,在[Database Mail]上按一下滑鼠右鍵 ,然後選取 [設定 Database Mail]。
2.接著跳出[Database Mail 組態精靈]視窗,您可以透過精靈執行下列工作:
*管理 Database Mail 帳戶和設定檔。
*管理設定檔安全性。
*檢視或變更系統參數。
*建立新的郵件設定檔
如下圖我們按下[下一步]繼續進行。
3.此範例為第一次設定Database Mail,請選擇[執行下列工作已設定Database Mail],並按[下一步]。
4.SQL Server 2008 預設並沒有啟動Database Mail的服務,所以如果您是第一次進行設定會跳出下列訊息,請按下[是]來啟動Database Mail。
5.幫Database Mail新增設定檔,請輸入設定檔名稱,按一下[加入]。
6.設定SMTP的郵件伺服器的帳戶資訊,設定完成後按下[確定]。建議您可以在您的郵件伺服器上新增一個帳號,專門給SQL Server的Database Mail使用。
7.設定完成後回到[新增設定檔]視窗,您可以看到剛剛新增的項目,並按下[下一步]。
8.然後進行設定檔安全性設定,安全性分為:
[公用設定檔]:任何角色都可使用公用設定檔來發送郵件。
[私人設定檔]:只允許限制的使用者或角色使用。
此範例我們設定為公用並設定為預設定定檔,請勾選公用並將預設定設頂選擇為[是],然後按下[下一步]。
9.接著設定系統參數,比較需要說明的項目主要是紀錄層次,紀錄層次是設定Database Mail的訊息類型,分為:
*一般:只有紀錄錯誤。
*擴充:紀錄錯誤、警告與其他有關資訊。
*詳細資訊:紀錄錯誤、警告、成功、資訊性訊息與其他內部訊息。
此範例我們使用預設值,並按[下一步]。
10.精靈會挑出確認頁面讓您確認要執行的工作,確認後按下[完成]。
11.建立後,可以看到下列訊息視窗,確認工作都執行成功後,按下[關閉]。
[b][測試Mail傳送][\b]
完成上面步驟後,您可以藉由下列步驟,測試是否可以正常傳送郵件,以確保可正確進行訊息通知。
1.在[Database Mail]上按一下滑鼠右鍵 ,然後選取 [傳送測試電子郵件]。
2.接著選擇設定檔,並填入收件者的郵件信箱,此範例我們選用剛剛設定DBA 設定檔,然後點選[傳送測試電子郵件]。
3.按下[傳送測試電子郵件]後會跳出提示視窗,按下[確認]後,就可以到收件者信箱確認是否正常收到測試郵件。
現在您已經知道Database Mail的架構與運作,並且學會如何設定Database Mail,下一篇我們會介紹如何讓SQL Server Agent利用Database Mail發送通知。